跳到主要内容

点表示XY平面上的位置。引擎内部不会修改一个已有点的位置(建议也不要自己去修改),所有会返回点的API都会返回一个创建出来的点。例如将点向某个方向移动,实际上是创建了一个新的点,而不是修改了传入的点。

创建

  • 参数
    • x (number) - X坐标
    • y (number) - Y坐标
  • 返回
    • point (point) - 点
local point = base.point(x, y)

angle

求角度

  • 参数
    • target (point) - 目标点
  • 返回
    • angle (number) - pointtarget的方向

返回值范围为(-180, 180]。作为一个常用操作,我们提供了一个语法糖point / target。(该语法糖即将被废弃)

local angle = point1:angle(point2)
local angle = point1 / point2 -- 除法操作符版本即将被废弃

copy

复制

  • 返回
    • new_point (point) - 复制出来的点
local new_point = point:copy()

distance

求距离

  • 参数
    • target (point) - 目标点
  • 返回
    • distance (number) - pointtarget的距离

作为一个常用操作,我们提供了一个语法糖point * target。(该语法糖即将被废弃)

local distance = point1:distance(point2)
local distance = point1 * point2 -- 乘号的语法糖即将被废弃

get_point

获取点

  • 返回
    • point (point) - 自己

这个方法不会创建一个新的点,返回的点就是对象自己。

local point = point:get_point()

get_xy

获取坐标

  • 返回
    • x (number) - X坐标
    • y (number) - Y坐标
local x, y = point:get_xy()

is_block

是否是静态碰撞

由c++实现的api

  • 参数
    • scene_name (string) - 该点所在的场景名
    • prevent_bits (string/table) 格子有该标记则阻挡, 默认是所有标记
    • required_bits (string/table) 格子没有该标记则阻挡,默认没有标记
  • 返回
    * result (boolean) - 是否是静态碰撞
    关于[标记]
local result = point:is_block(scene_name)

is_visible

是否可见

由c++实现的api

  • 参数
    • dest (unit/player) - 单位/玩家
    • scene_name (string) - 场景名
  • 结果
    • result (boolean) - 结果

判断点能否被dest看到。如果dest是单位,则会使用控制dest的玩家来计算[视野]

local result = point:is_visible(dest, scene_name)

play_sound

播放音效。多次播放的音效互不影响

由c++实现的api

  • 参数
    • name (string) - 音效名(音效表SoundData.ini里填的那个)
    • distance (number) - 截断距离
    • scene_name (string) - 场景名

[玩家的英雄]与点的距离超过截断距离时,将听不到音效。

point:play_sound(name, distance, scene_name)

移动

  • 参数
    • angle (number) - 方向
    • distance (number) - 距离
  • 返回
    • new_point (point) - 新的点

作为一个常用操作,我们提供了一个语法糖point - {angle, distance}(该语法糖即将被废弃)

local new_point = point - {anlge, distance}   -- 使用减号操作符的版本即将被废弃
local new_point = point:polar_to{angle, distance}

取反

  • 返回
    • new_point (point) - 新的点, 这个点的x,y,z = -x,-y,-z
local new_point = -point  -- 点被反转了

相加

  • 参数

    • point2 (point)
  • 返回

    • new_point (point) 新的点

    [new_x, new_y, new_z] = [self.x + point2.x, self.y + point2.y, self.z + point2.z]

local new_point = point + point2

坐标系映射

  • 参数 origin (point) 目标坐标系的原点 facing (number) 目标坐标系在z轴旋转的角度
  • 返回
    • new_point (point) 相对于目标坐标系的位置

self的当前坐标系是: origin: base.point(0, 0), 0), facing: 0 将self从当前坐标系映射到坐标系(origin, facing)后, 返回self在该坐标系里的位置

local origin = {300, 300}
local facing = 45
local new_point = point:to_coordinate(origin, facing)
``` new_point = point:to_coordinate({300, 300}, 45)


[标记]: /server/base/api/mover?id=pathing_bit_prevent-amp-pathing_bit_requird